/*
 * 文件名：LoginController.java
 * 版权： Copyright 2002-2007 12316yun. All Rights Reserved.
 * 描述：〈描述〉
 
 * 修改人：王钰玺
 * 修改时间：2018/4/28 10:57
 * 修改单号：〈修改单号〉
 * 修改内容：〈修改内容〉
 */
package com.yun12316.project.system.demopart.controller;

import com.yun12316.common.utils.ShiroKit;
import com.yun12316.framework.web.controller.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 登录退出
 * <p>
 * <p>登录退出</p>
 *
 * @author 王钰玺 2018/4/28
 * @see
 * @since 1.0
 */
@Controller
@Slf4j
public class LoginController extends BaseController {

    /**
     * 登录页(shiro配置需要两个/login 接口,一个是get用来获取登陆页面,一个用post用于登录)
     *
     * @return
     */

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login() {
        if (ShiroKit.isAuthenticated()) {
            return "redirect:/";
        }
        return "login";
    }

    /***
     * @param request
     * @param map
     *
     *登录提交地址与shiroConfig配置的loginurl一致。
     *
     *
     */
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(HttpServletRequest request, Map<String, Object> map) {
        log.info("登录方法start.........");
        // 登录失败从request中获取shiro处理的异常信息。shiroLoginFailure:就是shiro异常类的全类名.
        Object exception = request.getAttribute("shiroLoginFailure");
        String msg;
        if (exception != null) {
            if (exception.equals(UnknownAccountException.class.getName())) {
                msg = "用户名或者密码不正确，请重新输入";
            } else if (exception.equals(IncorrectCredentialsException.class.getName())) {
                msg = "密码错误，请重新输入";
            } else {
                msg = "发生未知错误，请联系管理员。";
            }
            map.put("username", request.getParameter("username"));
            map.put("password", request.getParameter("password"));
            map.put("msg", msg);
            return "login";
        }
        //如果已经登录，直接跳转主页面
        return "index";
    }

    /**
     * 主页
     * @return
     */
    @RequestMapping({"/", "/index"})
    public String index() {
        return "index";
    }

    /**
     * 欢迎页面
     */
    @RequestMapping("/welcome")
    public String welcome() {
        return "modules/common/welcome";
    }

    /**
     * 退出系统
     */
    @RequestMapping("/logout")
    public String logout() {
        return "";
    }

}
